//: C16:Stemp.cpp
// From Thinking in C++, 2nd Edition
// Available at http://www.BruceEckel.com
// (c) Bruce Eckel 1999
// Copyright notice in Copyright.txt
// Simple template example
#include "../require.h"
#include <iostream>
using namespace std;

template<class T>
class Array
{
    static const int size = 100;
    T A[size];
public:
    T& operator[](int index) {
        require(index >= 0 && index < size);
        return A[index];
    }
};

int main()
{
    Array<int> ia;
    Array<float> fa;
    for (int i = 0; i < 20; i++) {
        ia[i] = i * i;
        fa[i] = float(i) * 1.414;
    }
    for (int j = 0; j < 20; j++)
        cout << j << ": " << ia[j]
             << ", " << fa[j] << endl;
} ///:~
